package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @desc ImplementReportTaskPositionMsgHandleComReqDto
 * @使用场景
 */
@Data
public class ImplementReportTaskPositionMsgHandleComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 当前任务状态 EVA:待评价 AUDIT:待审核 EXPIRED:已逾期
     */
    @ApiModelProperty("当前任务状态")
    private String curTaskState;

    /**
     * 变更后任务状态 TO_REPORT:转待汇报 TO_EVA:转待评价 TO_AUDIT:转待审核 TO_SUCCESS:转成功 TO_FAILED:转失败 TO_EXPIRED:转逾期
     */
    @ApiModelProperty("变更后任务状态")
    private String alterTaskState;

    /**
     * 任务状态切换业务场景 AUTO_TO_REPORT:自动生成汇报场景 CANCLE_REPORT:撤销汇报任务场景 TRUN_DOWN_TASK:审核驳回任务场景 COMMIT_TASK:提交汇报任务场景 COMMIT_TO_EXAMINE:提交汇报转审核场景 COMMIT_TO_EVA:提交汇报转评价场景 TO_SUCCESS:汇报逾期转成功场景 TO_FAILED:汇报逾期转失败场景 AUTO_OVERDUE:自动转逾期场景
     */
    @ApiModelProperty("任务状态切换业务场景")
    private String taskStateToggleScene;

    /**
     * 任务进展状态 NOT_AT_THE:未开始 ONGOING:进行中 OVERDUE:已逾期 HAS_ENDED:已结束
     */
    @ApiModelProperty("任务进展状态")
    private String taskStatus;

    /**
     * 是否逾期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否逾期")
    private String isOverdue;

    /**
     * 是否完成填报工作 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否完成填报工作")
    private String isDoneFilleout;

    /**
     * 是否完成评价工作 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否完成评价工作")
    private String isDoneEvaluate;

    /**
     * 是否开启主观评分 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启主观评分")
    private String isSubjectiveScoring;

    /**
     * 是否开启主管人工审核 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启主管人工审核")
    private String isOpenAudit;

    /**
     * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
     */
    @NotNull(message = "关联目标内容类型编码不能为空")
    @ApiModelProperty("关联目标内容类型编码")
    private String targetCycleContentTypeCode;

    /**
     * 关联目标内容ID
     */
    @NotNull(message = "关联目标内容ID不能为空")
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;

    /**
     * 冗余评价模板ID
     */
    @NotNull(message = "冗余评价模板ID不能为空")
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;

}
